// Package dicomuid defines standard UIDs, as defined in P3.6.
//
// http://dicom.nema.org/medical/dicom/current/output/pdf/part06.pdf
package dicomuid

// Translated from pynetdict, _uid_dict.py

import (
	"fmt"
)

type UIDType string

const (
	TypeSOPClass                  UIDType = "SOP Class"
	TypeTransferSyntax            UIDType = "Transfer Syntax"
	TypeWellKnownFrameOfReference UIDType = "Well-known frame of reference"
	TypeWellKnownSOPInstance      UIDType = "Well-known SOP instance"
	TypeCodingScheme              UIDType = "Coding Scheme"
)

// Commonly used UID constants.
var (
	PatientRootQRFind = standardUID("1.2.840.10008.5.1.4.1.2.1.1")
	StudyRootQRFind   = standardUID("1.2.840.10008.5.1.4.1.2.2.1")
	PatientRootQRGet  = standardUID("1.2.840.10008.5.1.4.1.2.1.3")
	StudyRootQRGet    = standardUID("1.2.840.10008.5.1.4.1.2.2.3")
	PatientRootQRMove = standardUID("1.2.840.10008.5.1.4.1.2.1.2")
	StudyRootQRMove   = standardUID("1.2.840.10008.5.1.4.1.2.2.2")

	ModalityWorklistInformationFind = standardUID("1.2.840.10008.5.1.4.31")
	VerificationSOPClass            = standardUID("1.2.840.10008.1.1")

	// https://www.dicomlibrary.com/dicom/transfer-syntax/
	ImplicitVRLittleEndian         = standardUID("1.2.840.10008.1.2")
	ExplicitVRLittleEndian         = standardUID("1.2.840.10008.1.2.1")
	ExplicitVRBigEndian            = standardUID("1.2.840.10008.1.2.2")
	DeflatedExplicitVRLittleEndian = standardUID("1.2.840.10008.1.2.1.99")
)

type UIDInfo struct {
	UID    string  // "1.2.840.10008.x.y.z"
	Name   string  // The UID string, e.g.,"1.2.840.10008.1.2.1".
	Type   UIDType // "SOP Class", "Transfer Syntax", etc.
	Part   string  // Not used.
	Status string  // "" if active. "Retired", if netired.
}

var uidDict map[string]UIDInfo

func maybeInitUIDDict() {
	if len(uidDict) > 0 {
		return
	}
	uidDict = make(map[string]UIDInfo)
	var add = func(uid, name string, uidType UIDType, part, status string) {
		uidDict[uid] = UIDInfo{uid, name, uidType, part, status}
	}

	add("1.2.840.10008.1.1", "Verification SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.1.2", "Implicit VR Little Endian", TypeTransferSyntax, "Default Transfer Syntax for DICOM", "")
	add("1.2.840.10008.1.2.1", "Explicit VR Little Endian", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.1.99", "Deflated Explicit VR Little Endian", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.2", "Explicit VR Big Endian", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.50", "JPEG Baseline (Process 1)", TypeTransferSyntax, "Default Transfer Syntax for Lossy JPEG 8 Bit Image Compression", "")
	add("1.2.840.10008.1.2.4.51", "JPEG Extended (Process 2 and 4)", TypeTransferSyntax, "Default Transfer Syntax for Lossy JPEG 12 Bit Image Compression (Process 4 only)", "")
	add("1.2.840.10008.1.2.4.52", "JPEG Extended (Process 3 and 5)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.53", "JPEG Spectral Selection, Non-Hierarchical (Process 6 and 8)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.54", "JPEG Spectral Selection, Non-Hierarchical (Process 7 and 9)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.55", "JPEG Full Progression, Non-Hierarchical (Process 10 and 12)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.56", "JPEG Full Progression, Non-Hierarchical (Process 11 and 13)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.57", "JPEG Lossless, Non-Hierarchical (Process 14)", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.58", "JPEG Lossless, Non-Hierarchical (Process 15)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.59", "JPEG Extended, Hierarchical (Process 16 and 18)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.60", "JPEG Extended, Hierarchical (Process 17 and 19)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.61", "JPEG Spectral Selection, Hierarchical (Process 20 and 22)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.62", "JPEG Spectral Selection, Hierarchical (Process 21 and 23)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.63", "JPEG Full Progression, Hierarchical (Process 24 and 26)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.64", "JPEG Full Progression, Hierarchical (Process 25 and 27)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.65", "JPEG Lossless, Hierarchical (Process 28)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.66", "JPEG Lossless, Hierarchical (Process 29)", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.2.4.70", "JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 [Selection Value 1])", TypeTransferSyntax, "Default Transfer Syntax for Lossless JPEG Image Compression", "")
	add("1.2.840.10008.1.2.4.80", "JPEG-LS Lossless Image Compression", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.81", "JPEG-LS Lossy (Near-Lossless) Image Compression", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.90", "JPEG 2000 Image Compression (Lossless Only)", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.91", "JPEG 2000 Image Compression", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.92", "JPEG 2000 Part 2 Multi-component Image Compression (Lossless Only)", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.93", "JPEG 2000 Part 2 Multi-component Image Compression", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.94", "JPIP Referenced", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.95", "JPIP Referenced Deflate", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.100", "MPEG2 Main Profile / Main Level", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.101", "MPEG2 Main Profile / High Level", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.102", "MPEG-4 AVC/H.264 High Profile / Level 4.1", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.103", "MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.104", "MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.105", "MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.106", "MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.107", "HEVC/H.265 Main Profile / Level 5.1", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.4.108", "HEVC/H.265 Main 10 Profile / Level 5.1", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.5", "RLE Lossless", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.6.1", "RFC 2557 MIME encapsulation", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.2.6.2", "XML Encoding", TypeTransferSyntax, "", "")
	add("1.2.840.10008.1.3.10", "Media Storage Directory Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.1.4.1.1", "Talairach Brain Atlas Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.2", "SPM2 T1 Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.3", "SPM2 T2 Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.4", "SPM2 PD Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.5", "SPM2 EPI Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.6", "SPM2 FIL T1 Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.7", "SPM2 PET Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.8", "SPM2 TRANSM Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.9", "SPM2 SPECT Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.10", "SPM2 GRAY Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.11", "SPM2 WHITE Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.12", "SPM2 CSF Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.13", "SPM2 BRAINMASK Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.14", "SPM2 AVG305T1 Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.15", "SPM2 AVG152T1 Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.16", "SPM2 AVG152T2 Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.17", "SPM2 AVG152PD Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.1.18", "SPM2 SINGLESUBJT1 Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.2.1", "ICBM 452 T1 Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.4.2.2", "ICBM Single Subject MRI Frame of Reference", TypeWellKnownFrameOfReference, "", "")
	add("1.2.840.10008.1.5.1", "Hot Iron Color Palette SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.1.5.2", "PET Color Palette SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.1.5.3", "Hot Metal Blue Color Palette SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.1.5.4", "PET 20 Step Color Palette SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.1.5.5", "Spring Color Palette SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.1.5.6", "Summer Color Palette SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.1.5.7", "Fall Color Palette SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.1.5.8", "Winter Color Palette SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.1.9", "Basic Study Content Notification SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.1.20", "Papyrus 3 Implicit VR Little Endian", TypeTransferSyntax, "", "Retired")
	add("1.2.840.10008.1.20.1", "Storage Commitment Push Model SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.1.20.1.1", "Storage Commitment Push Model SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.1.20.2", "Storage Commitment Pull Model SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.1.20.2.1", "Storage Commitment Pull Model SOP Instance", TypeWellKnownSOPInstance, "", "Retired")
	add("1.2.840.10008.1.40", "Procedural Event Logging SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.1.40.1", "Procedural Event Logging SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.1.42", "Substance Administration Logging SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.1.42.1", "Substance Administration Logging SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.2.6.1", "DICOM UID Registry", "DICOM UIDs as Coding Scheme", "", "")
	add("1.2.840.10008.2.16.4", "DICOM Controlled Terminology", TypeCodingScheme, "", "")
	add("1.2.840.10008.2.16.5", "Adult Mouse Anatomy Ontology", TypeCodingScheme, "", "")
	add("1.2.840.10008.2.16.6", "Uberon Ontology", TypeCodingScheme, "", "")
	add("1.2.840.10008.2.16.7", "Integrated Taxonomic Information System (ITIS) Taxonomic Serial Number (TSN)", TypeCodingScheme, "", "")
	add("1.2.840.10008.2.16.8", "Mouse Genome Initiative (MGI)", TypeCodingScheme, "", "")
	add("1.2.840.10008.2.16.9", "PubChem Compound CID", TypeCodingScheme, "", "")
	add("1.2.840.10008.3.1.1.1", "DICOM Application Context Name", "Application Context Name", "", "")
	add("1.2.840.10008.3.1.2.1.1", "Detached Patient Management SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.3.1.2.1.4", "Detached Patient Management Meta SOP Class", "Meta SOP Class", "", "Retired")
	add("1.2.840.10008.3.1.2.2.1", "Detached Visit Management SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.3.1.2.3.1", "Detached Study Management SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.3.1.2.3.2", "Study Component Management SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.3.1.2.3.3", "Modality Performed Procedure Step SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.3.1.2.3.4", "Modality Performed Procedure Step Retrieve SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.3.1.2.3.5", "Modality Performed Procedure Step Notification SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.3.1.2.5.1", "Detached Results Management SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.3.1.2.5.4", "Detached Results Management Meta SOP Class", "Meta SOP Class", "", "Retired")
	add("1.2.840.10008.3.1.2.5.5", "Detached Study Management Meta SOP Class", "Meta SOP Class", "", "Retired")
	add("1.2.840.10008.3.1.2.6.1", "Detached Interpretation Management SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.4.2", "Storage Service Class", "Service Class", "", "")
	add("1.2.840.10008.5.1.1.1", "Basic Film Session SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.1.2", "Basic Film Box SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.1.4", "Basic Grayscale Image Box SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.1.4.1", "Basic Color Image Box SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.1.4.2", "Referenced Image Box SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.1.9", "Basic Grayscale Print Management Meta SOP Class", "Meta SOP Class", "", "")
	add("1.2.840.10008.5.1.1.9.1", "Referenced Grayscale Print Management Meta SOP Class", "Meta SOP Class", "", "Retired")
	add("1.2.840.10008.5.1.1.14", "Print Job SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.1.15", "Basic Annotation Box SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.1.16", "Printer SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.1.16.376", "Printer Configuration Retrieval SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.1.17", "Printer SOP Instance", "Well-known Printer SOP Instance", "", "")
	add("1.2.840.10008.5.1.1.17.376", "Printer Configuration Retrieval SOP Instance", "Well-known Printer SOP Instance", "", "")
	add("1.2.840.10008.5.1.1.18", "Basic Color Print Management Meta SOP Class", "Meta SOP Class", "", "")
	add("1.2.840.10008.5.1.1.18.1", "Referenced Color Print Management Meta SOP Class", "Meta SOP Class", "", "Retired")
	add("1.2.840.10008.5.1.1.22", "VOI LUT Box SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.1.23", "Presentation LUT SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.1.24", "Image Overlay Box SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.1.24.1", "Basic Print Image Overlay Box SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.1.25", "Print Queue SOP Instance", "Well-known Print Queue SOP Instance", "", "Retired")
	add("1.2.840.10008.5.1.1.26", "Print Queue Management SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.1.27", "Stored Print Storage SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.1.29", "Hardcopy Grayscale Image Storage SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.1.30", "Hardcopy Color Image Storage SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.1.31", "Pull Print Request SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.1.32", "Pull Stored Print Management Meta SOP Class", "Meta SOP Class", "", "Retired")
	add("1.2.840.10008.5.1.1.33", "Media Creation Management SOP Class UID", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.1.40", "Display System SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.1.40.1", "Display System SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.5.1.4.1.1.1", "Computed Radiography Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.1.1", "Digital X-Ray Image Storage - For Presentation", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.1.1.1", "Digital X-Ray Image Storage - For Processing", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.1.2", "Digital Mammography X-Ray Image Storage - For Presentation", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.1.2.1", "Digital Mammography X-Ray Image Storage - For Processing", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.1.3", "Digital Intra-Oral X-Ray Image Storage - For Presentation", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.1.3.1", "Digital Intra-Oral X-Ray Image Storage - For Processing", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.2", "CT Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.2.1", "Enhanced CT Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.2.2", "Legacy Converted Enhanced CT Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.3", "Ultrasound Multi-frame Image Storage", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.3.1", "Ultrasound Multi-frame Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.4", "MR Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.4.1", "Enhanced MR Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.4.2", "MR Spectroscopy Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.4.3", "Enhanced MR Color Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.4.4", "Legacy Converted Enhanced MR Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.5", "Nuclear Medicine Image Storage", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.6", "Ultrasound Image Storage", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.6.1", "Ultrasound Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.6.2", "Enhanced US Volume Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.7", "Secondary Capture Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.7.1", "Multi-frame Single Bit Secondary Capture Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.7.2", "Multi-frame Grayscale Byte Secondary Capture Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.7.3", "Multi-frame Grayscale Word Secondary Capture Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.7.4", "Multi-frame True Color Secondary Capture Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.8", "Standalone Overlay Storage", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.9", "Standalone Curve Storage", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.9.1", "Waveform Storage - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.9.1.1", "12-lead ECG Waveform Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.9.1.2", "General ECG Waveform Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.9.1.3", "Ambulatory ECG Waveform Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.9.2.1", "Hemodynamic Waveform Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.9.3.1", "Cardiac Electrophysiology Waveform Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.9.4.1", "Basic Voice Audio Waveform Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.9.4.2", "General Audio Waveform Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.9.5.1", "Arterial Pulse Waveform Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.9.6.1", "Respiratory Waveform Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.10", "Standalone Modality LUT Storage", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.11", "Standalone VOI LUT Storage", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.11.1", "Grayscale Softcopy Presentation State Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.11.2", "Color Softcopy Presentation State Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.11.3", "Pseudo-Color Softcopy Presentation State Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.11.4", "Blending Softcopy Presentation State Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.11.5", "XA/XRF Grayscale Softcopy Presentation State Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.11.6", "Grayscale Planar MPR Volumetric Presentation State Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.11.7", "Compositing Planar MPR Volumetric Presentation State Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.11.8", "Advanced Blending Presentation State Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.11.9", "Volume Rendering Volumetric Presentation State Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.11.10", "Segmented Volume Rendering Volumetric Presentation State Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.11.11", "Multiple Volume Rendering Volumetric Presentation State Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.12.1", "X-Ray Angiographic Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.12.1.1", "Enhanced XA Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.12.2", "X-Ray Radiofluoroscopic Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.12.2.1", "Enhanced XRF Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.12.3", "X-Ray Angiographic Bi-Plane Image Storage", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.12.77", "", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.13.1.1", "X-Ray 3D Angiographic Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.13.1.2", "X-Ray 3D Craniofacial Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.13.1.3", "Breast Tomosynthesis Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.13.1.4", "Breast Projection X-Ray Image Storage - For Presentation", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.13.1.5", "Breast Projection X-Ray Image Storage - For Processing", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.14.1", "Intravascular Optical Coherence Tomography Image Storage - For Presentation", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.14.2", "Intravascular Optical Coherence Tomography Image Storage - For Processing", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.20", "Nuclear Medicine Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.30", "Parametric Map Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.40", "", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.66", "Raw Data Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.66.1", "Spatial Registration Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.66.2", "Spatial Fiducials Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.66.3", "Deformable Spatial Registration Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.66.4", "Segmentation Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.66.5", "Surface Segmentation Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.66.6", "Tractography Results Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.67", "Real World Value Mapping Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.68.1", "Surface Scan Mesh Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.68.2", "Surface Scan Point Cloud Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1", "VL Image Storage - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.77.2", "VL Multi-frame Image Storage - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.77.1.1", "VL Endoscopic Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.1.1", "Video Endoscopic Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.2", "VL Microscopic Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.2.1", "Video Microscopic Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.3", "VL Slide-Coordinates Microscopic Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.4", "VL Photographic Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.4.1", "Video Photographic Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.5.1", "Ophthalmic Photography 8 Bit Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.5.2", "Ophthalmic Photography 16 Bit Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.5.3", "Stereometric Relationship Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.5.4", "Ophthalmic Tomography Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.5.5", "Wide Field Ophthalmic Photography Stereographic Projection Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.5.6", "Wide Field Ophthalmic Photography 3D Coordinates Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.5.7", "Ophthalmic Optical Coherence Tomography En Face Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.5.8", "Ophthalmic Optical Coherence Tomography B-scan Volume Analysis Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.77.1.6", "VL Whole Slide Microscopy Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.78.1", "Lensometry Measurements Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.78.2", "Autorefraction Measurements Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.78.3", "Keratometry Measurements Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.78.4", "Subjective Refraction Measurements Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.78.5", "Visual Acuity Measurements Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.78.6", "Spectacle Prescription Report Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.78.7", "Ophthalmic Axial Measurements Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.78.8", "Intraocular Lens Calculations Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.79.1", "Macular Grid Thickness and Volume Report Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.80.1", "Ophthalmic Visual Field Static Perimetry Measurements Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.81.1", "Ophthalmic Thickness Map Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.82.1", "Corneal Topography Map Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.1", "Text SR Storage - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.88.2", "Audio SR Storage - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.88.3", "Detail SR Storage - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.88.4", "Comprehensive SR Storage - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.88.11", "Basic Text SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.22", "Enhanced SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.33", "Comprehensive SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.34", "Comprehensive 3D SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.35", "Extensible SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.40", "Procedure Log Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.50", "Mammography CAD SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.59", "Key Object Selection Document Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.65", "Chest CAD SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.67", "X-Ray Radiation Dose SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.68", "Radiopharmaceutical Radiation Dose SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.69", "Colon CAD SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.70", "Implantation Plan SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.71", "Acquisition Context SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.72", "Simplified Adult Echo SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.88.73", "Patient Radiation Dose SR Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.90.1", "Content Assessment Results Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.104.1", "Encapsulated PDF Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.104.2", "Encapsulated CDA Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.128", "Positron Emission Tomography Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.128.1", "Legacy Converted Enhanced PET Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.129", "Standalone PET Curve Storage", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.1.130", "Enhanced PET Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.131", "Basic Structured Display Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.200.1", "CT Defined Procedure Protocol Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.200.2", "CT Performed Procedure Protocol Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.200.3", "Protocol Approval Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.200.4", "Protocol Approval Information Model - FIND", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.200.5", "Protocol Approval Information Model - MOVE", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.200.6", "Protocol Approval Information Model - GET", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.481.1", "RT Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.481.2", "RT Dose Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.481.3", "RT Structure Set Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.481.4", "RT Beams Treatment Record Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.481.5", "RT Plan Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.481.6", "RT Brachy Treatment Record Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.481.7", "RT Treatment Summary Record Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.481.8", "RT Ion Plan Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.481.9", "RT Ion Beams Treatment Record Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.501.1", "DICOS CT Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.501.2.1", "DICOS Digital X-Ray Image Storage - For Presentation", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.501.2.2", "DICOS Digital X-Ray Image Storage - For Processing", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.501.3", "DICOS Threat Detection Report Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.501.4", "DICOS 2D AIT Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.501.5", "DICOS 3D AIT Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.501.6", "DICOS Quadrupole Resonance (QR) Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.601.1", "Eddy Current Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.1.601.2", "Eddy Current Multi-frame Image Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.2.1.1", "Patient Root Query/Retrieve Information Model - FIND", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.2.1.2", "Patient Root Query/Retrieve Information Model - MOVE", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.2.1.3", "Patient Root Query/Retrieve Information Model - GET", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.2.2.1", "Study Root Query/Retrieve Information Model - FIND", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.2.2.2", "Study Root Query/Retrieve Information Model - MOVE", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.2.2.3", "Study Root Query/Retrieve Information Model - GET", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.2.3.1", "Patient/Study Only Query/Retrieve Information Model - FIND", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.2.3.2", "Patient/Study Only Query/Retrieve Information Model - MOVE", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.2.3.3", "Patient/Study Only Query/Retrieve Information Model - GET", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.1.2.4.2", "Composite Instance Root Retrieve - MOVE", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.2.4.3", "Composite Instance Root Retrieve - GET", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.1.2.5.3", "Composite Instance Retrieve Without Bulk Data - GET", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.20.1", "Defined Procedure Protocol Information Model - FIND", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.20.2", "Defined Procedure Protocol Information Model - MOVE", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.20.3", "Defined Procedure Protocol Information Model - GET", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.31", "Modality Worklist Information Model - FIND", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.32", "General Purpose Worklist Management Meta SOP Class", "Meta SOP Class", "", "Retired")
	add("1.2.840.10008.5.1.4.32.1", "General Purpose Worklist Information Model - FIND", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.32.2", "General Purpose Scheduled Procedure Step SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.32.3", "General Purpose Performed Procedure Step SOP Class", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.33", "Instance Availability Notification SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.34.1", "RT Beams Delivery Instruction Storage - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.34.2", "RT Conventional Machine Verification - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.34.3", "RT Ion Machine Verification - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.34.4", "Unified Worklist and Procedure Step Service Class - Trial", "Service Class", "", "Retired")
	add("1.2.840.10008.5.1.4.34.4.1", "Unified Procedure Step - Push SOP Class - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.34.4.2", "Unified Procedure Step - Watch SOP Class - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.34.4.3", "Unified Procedure Step - Pull SOP Class - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.34.4.4", "Unified Procedure Step - Event SOP Class - Trial", TypeSOPClass, "", "Retired")
	add("1.2.840.10008.5.1.4.34.5", "UPS Global Subscription SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.5.1.4.34.5.1", "UPS Filtered Global Subscription SOP Instance", TypeWellKnownSOPInstance, "", "")
	add("1.2.840.10008.5.1.4.34.6", "Unified Worklist and Procedure Step Service Class", "Service Class", "", "")
	add("1.2.840.10008.5.1.4.34.6.1", "Unified Procedure Step - Push SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.34.6.2", "Unified Procedure Step - Watch SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.34.6.3", "Unified Procedure Step - Pull SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.34.6.4", "Unified Procedure Step - Event SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.34.7", "RT Beams Delivery Instruction Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.34.8", "RT Conventional Machine Verification", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.34.9", "RT Ion Machine Verification", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.34.10", "RT Brachy Application Setup Delivery Instruction Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.37.1", "General Relevant Patient Information Query", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.37.2", "Breast Imaging Relevant Patient Information Query", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.37.3", "Cardiac Relevant Patient Information Query", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.38.1", "Hanging Protocol Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.38.2", "Hanging Protocol Information Model - FIND", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.38.3", "Hanging Protocol Information Model - MOVE", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.38.4", "Hanging Protocol Information Model - GET", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.39.1", "Color Palette Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.39.2", "Color Palette Query/Retrieve Information Model - FIND", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.39.3", "Color Palette Query/Retrieve Information Model - MOVE", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.39.4", "Color Palette Query/Retrieve Information Model - GET", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.41", "Product Characteristics Query SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.42", "Substance Approval Query SOP Class", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.43.1", "Generic Implant Template Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.43.2", "Generic Implant Template Information Model - FIND", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.43.3", "Generic Implant Template Information Model - MOVE", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.43.4", "Generic Implant Template Information Model - GET", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.44.1", "Implant Assembly Template Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.44.2", "Implant Assembly Template Information Model - FIND", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.44.3", "Implant Assembly Template Information Model - MOVE", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.44.4", "Implant Assembly Template Information Model - GET", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.45.1", "Implant Template Group Storage", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.45.2", "Implant Template Group Information Model - FIND", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.45.3", "Implant Template Group Information Model - MOVE", TypeSOPClass, "", "")
	add("1.2.840.10008.5.1.4.45.4", "Implant Template Group Information Model - GET", TypeSOPClass, "", "")
	add("1.2.840.10008.7.1.1", "NativeData DICOM Model", "Application Hosting Model", "", "")
	add("1.2.840.10008.7.1.2", "Abstract Multi-Dimensional Image Model", "Application Hosting Model", "", "")
	add("1.2.840.10008.8.1.1", "DICOM Content Mapping Resource", "Mapping Resource", "", "")
	add("1.2.840.10008.15.0.3.1", "dicomDeviceName", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.2", "dicomDescription", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.3", "dicomManufacturer", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.4", "dicomManufacturerModelName", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.5", "dicomSoftwareVersion", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.6", "dicomVendorData", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.7", "dicomAETitle", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.8", "dicomNetworkConnectionReference", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.9", "dicomApplicationCluster", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.10", "dicomAssociationInitiator", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.11", "dicomAssociationAcceptor", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.12", "dicomHostname", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.13", "dicomPort", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.14", "dicomSOPClass", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.15", "dicomTransferRole", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.16", "dicomTransferSyntax", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.17", "dicomPrimaryDeviceType", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.18", "dicomRelatedDeviceReference", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.19", "dicomPreferredCalledAETitle", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.20", "dicomTLSCyphersuite", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.21", "dicomAuthorizedNodeCertificateReference", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.22", "dicomThisNodeCertificateReference", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.23", "dicomInstalled", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.24", "dicomStationName", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.25", "dicomDeviceSerialNumber", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.26", "dicomInstitutionName", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.27", "dicomInstitutionAddress", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.28", "dicomInstitutionDepartmentName", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.29", "dicomIssuerOfPatientID", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.30", "dicomPreferredCallingAETitle", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.3.31", "dicomSupportedCharacterSet", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.4.1", "dicomConfigurationRoot", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.4.2", "dicomDevicesRoot", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.4.3", "dicomUniqueAETitlesRegistryRoot", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.4.4", "dicomDevice", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.4.5", "dicomNetworkAE", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.4.6", "dicomNetworkConnection", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.4.7", "dicomUniqueAETitle", "LDAP OID", "", "")
	add("1.2.840.10008.15.0.4.8", "dicomTransferCapability", "LDAP OID", "", "")
	add("1.2.840.10008.15.1.1", "Universal Coordinated Time", "Synchronization Frame of Reference", "", "")
}

func standardUID(uid string) string {
	maybeInitUIDDict()
	return MustLookup(uid).UID
}

// Find information about the given uid (string starting with 1.2.840).  Returns
// an error unless uid is the one defined in the DICOM standard, P3.6.
func Lookup(uid string) (UIDInfo, error) {
	e, ok := uidDict[uid]
	if !ok {
		return UIDInfo{}, fmt.Errorf("UID '%s' not found in dictionary", uid)
	}
	return e, nil
}

// Similar to LookupUID, but crashes the process on error.
func MustLookup(uid string) UIDInfo {
	e, err := Lookup(uid)
	if err != nil {
		panic(err)
	}
	return e
}

// UidString returns a human-readable diagnostic string for a DICOM UID.
func UIDString(uid string) string {
	e, ok := uidDict[uid]
	if !ok {
		return fmt.Sprintf("%s[??]", uid)
	}
	return fmt.Sprintf("%s[%s]", uid, e.Name)
}
